'EXAMPLE SCPI SCRIPT version 2.0
'ASSUMES CH1-CH8 ARE RATED 80V 15A
'DEMO mode can be used to test operation
'NOTE: lines starting with the character ' are ignored
'      so that multiple blocks can be copied and 
'      pasted into SCPI Test if desired

'1: SETUP THREE CHANNEL GROUPS

*rst
*idn?
syst:gro:dele:all
syst:gro:def:par 1,(@1:2)
syst:gro:def:par 2,(@3:4)
syst:gro:def:ser 3,(@5:6)
syst:gro:set
syst:gro:cat?
syst:chan:count?
syst:chan:maxv? (@1,3,5)
syst:chan:maxc? (@1,3,5)
syst:chan:maxov? (@1,3,5)
syst:chan:maxp? (@1,3,5)
syst:chan:maxovc? (@1,3,5)
syst:chan:ser? (@1:6)
syst:err?

'2: SETUP CHANNELS, SET CH1 IN PS MODE

sour:volt:prot:lev 75,(@1,3);lev? (@1,3)
sour:volt:prot:lev 155,(@5);lev? (@5)
sour:curr:prot:lev 0,(@1,3,5);lev? (@1,3,5)
sens:aver 20,(@1,3,5);aver? (@1,3,5)
sens:p 0.01,(@1,3,5);i 0.02,(@1,3,5);d 0.03,(@1,3,5)
sens:vp 0.04,(@1,3,5);vi 0.05,(@1,3,5);vd 0.06,(@1,3,5)
sens:p? (@1,3,5);i? (@1,3,5);d? (@1,3,5)
sens:vp? (@1,3,5);vi? (@1,3,5);vd? (@1,3,5)
sens:mod PS, (@1)
sens:mod? (@1,3,5)
syst:err?

'3: LOAD ONE CURVE, CREATE EN50530 CURVE, LOAD ONE PROFILE

curv:readf "Sunpower 230 (72 cells)"
curv:en50530:mpp 1000, 100
curv:en50530:mpp?
curv:en50530:sim csi,sta
curv:en50530:sim? 
curv:en50530:add
prof:readf "Irradiance test"
syst:vers?;:curv:cat?;:prof:cat?
syst:err?

'4: START STATIC SIMULATION

sour:volt 70,(@1);volt? (@1)
sour:curr 10,(@1);curr? (@1)
sour:curv "Sunpower 230 (72 cells)",(@3,7,8)
sour:curv "EN 50530 CURVE",(@5)
sour:irr 800,(@3);temp 50,(@3)
sour:irr? (@3);temp? (@3)
sour:exec (@3,5)
outp on,(@1,3,5,7,8);*wai;:outp? (@1,3,5,7,8)
syst:err?

'5: MEASURE VDC,VAC,IDC,IAC,POW,MPP,ENER

meas:volt:dc? (@1,3,5);ac? (@1,3,5)
meas:curr:dc? (@1,3,5);ac? (@1,3,5)
meas:pow? (@1,3,5);:meas:mpp? (@1,3,5);:meas:ener? (@1,3,5)
stat:oper:cond? (@1,3,5)
stat:oper:cond? 
syst:err?

'6: CHANGE EN50530 SETTINGS

sour:en50530:volt 110, (@5);volt? (@5)
sour:en50530:pow 1300, (@5);pow? (@5)
sour:en50530:tech tf, (@5);tech? (@5)
sour:en50530:sim dyn, (@5);sim? (@5)
sour:irr 800,(@5);temp 50,(@5)
sour:irr? (@5);temp? (@5)
sour:exec (@5)
syst:err?

'7: START PROFILE EXECUTION

sour:prof "Irradiance test",(@3,5)
sour:prof:offs 50,(@3,5);offs 100,(@3,5)
sour:prof:offs? (@3,5)
sens:prof:sp 1,(@3,5);sp? (@3,5)
sens:prof:loop on,(@3,5);loop? (@3,5)
trig (@3,5)
stat:oper:cond? (@3,5);cond?
syst:err?

'8: STOP PROFILE EXECUTION
abor (@3,5);*wai;:stat:oper:cond? (@3,5);cond?
syst:err?

'9: SHOW AND RESET ENERGY METERS
meas:ener? (@1,3,5)
sens:ener:res (@1,3,5)
meas:ener? (@1,3,5)
syst:err?

'10: CONFIGURE AND START DATALOGGING

sens:dlog:tint 1;tint?
sens:dlog:enab (@1,3,5);enab? (@1,3,5)
sens:dlog:data (1:11);data?
sens:dlog:name "Test_script";name?
trig:dlog;*wai;:stat:oper:cond? (@1,3,5);cond?
syst:err?

'11: STOP DATALOGGING

abor:dlog;*wai;:stat:oper:cond? (@1,3,5);cond?
syst:err?

'12: SETUP INRUSH LIMITER MODULE

sens:inl ON,(@1,3)
sens:ile 200, (@1,3)
sens:inl? (@1,3)
sens:ile? (@1,3)
syst:err?

'13: DISABLE INTERPOLATION SLOPE

sens:di ON,(@3,5)
sens:di? (@3,5)
syst:err?

'14: CONFIGURE AND START MPPT RECOVERY MEAS

prof:readf "Fast ramp"
sens:mpptr:curv "Sunpower 230 (72 cells)"
sens:mpptr:curv?
sens:mpptr:prof "Fast ramp"
sens:mpptr:prof?
sens:mpptr:trig 33,66
sens:mpptr:trig?
sens:mpptr:max 5,5
sens:mpptr:max?
sens:mpptr:val 99,99
sens:mpptr:val?
sens:mpptr:tol 1,1
sens:mpptr:tol?
sens:mpptr:enab (@7,8)
sens:mpptr:enab? (@7,8)
trig:mpptr;*wai;:stat:oper:cond? (@7,8);cond?
syst:err?

'15: READ MPPT RECOVERY MEAS

meas:mpptr?
stat:oper:cond? (@7,8);cond?
syst:err?

'16: CREATE AND ADD NEW SNL CURVE

curv:vi 12,5;vi?
curv:mpp 10.73,4.47;mpp?;form?
curv:kf 11.16,200;kf?
curv:beta -0.25,-0.29;beta?
curv:add "Test_script"
syst:err?

'17: ADD AND CONFIGURE TWO ARRAYS

arra:size 3,1
arra:size?
arra:add "Test 1"
arra:size 4,2
arra:size?
arra:add "Test 2"
arra:sel?
arra:mult 2
arra:mult?
arra:mod0:str0:curv "Sunpower 230 (72 cells)"
arra:mod0:str1:prof "Irradiance test"
arra:mod1:str1:curv ""
arra:mod1:str1:prof ""
arra:sel "Test 1"
arra:sel?
arra:mod0:str0:curv "Test_script"
arra:cat?
syst:err?

'18: DELETE ONE ARRAY

arra:dele "Test 2"
arra:cat?
syst:err?

'19: ASSIGN ARRAY TO OUTPUT CHANNEL

arra "Test 1",(@7,8)
arra? (@7,8)
sour7:arra:mod0:str0:irr 1000
sour7:arra:mod1:str1:irr 200.5
sour7:arra:mod1:str1:temp 50.5
sour7:arra:mod1:str1:dio no
sour7:arra:mod1:str1:res 1.2
sour7:arra:mod1:str1:irr?
sour7:arra:mod1:str1:temp?
sour7:arra:mod1:str1:dio?
sour7:arra:mod1:str1:res?
syst:err?
sour7:arra:exec
sour8:arra:exec
syst:err?


'END OF SCRIPT



